<template>
  <el-card class="upload">
    <UploadExcel :on-success="importFile" />
  </el-card>
</template>

<script>
import Room from '@/utils/constant/rooms'
import {addRoom,getRoomList} from '@/api/rooms'
export default {
  methods: {
    async importFile({ header, results }) {
      // console.log(header,results);
      // console.log(header);
       const list={
        "介绍":"baseinfo",
        "价格":"price",
        "房间号":"num",
        "房间名":"name",
        "房间类型":"type"
      }
    // 必须存在有的字段名
    const needkeys= Array.from(Object.keys(list))
    // console.log(needkeys);
    let flag2=true
    let needkey=null
    needkeys.forEach(item=>{
      if(header.indexOf(item)===-1){
        flag2=false
        needkey=item
        return 
      }
    })
    if(!flag2) return this.$message.error(`缺少必须字段名------${needkey}`)
    console.log(1);
    const arr=results.map(item=>{
      const room={}
      Object.keys(item).forEach(key=>{
       if(key==="房间类型"){
         room[list[key]]=this.tranType(item[key])
       }else{
          room[list[key]]=item[key]
       }
      })
      return room
    }) 
    const Roomslist=await getRoomList()
    // 检查自己没有重复
    let flag1=true
    let t1={}
    // 从自己项到倒数第二项开始一直往后面比（可以思考冒泡排序）
    for(let i=0;i<arr.length-1;i++){
      for(let j=i+1;j<arr.length;j++){
        if(arr[i].num===arr[j].num||arr[i].name===arr[j].name){
          // console.log(arr[j]);
          flag1=false
          t1=arr[j]
        }
      }
    }
    if(!flag1) return this.$message.error(`上传的表中存在重复的房间号----${t1.num}----或者房间名---${t1.name}---，请检查后导入`)
    console.log(2);
    let flag=false
    let t={}
    let ff=false
    arr.forEach(item=>{
      // 找到了就是正确的true,没有找到false
      flag= Roomslist.some(room=>room.num==item.num||room.name==item.name)
     if(flag){
      //  必须得有ff不然找到之后后面的会继续遍历
        ff=flag
       return t=item
     }
    })
    flag=ff?ff:flag
    if(flag) return this.$message.error(`库存存在房间号----${t.num}----或房间名---${t.name}---，请检查后导入`)
    console.log(3);
    // 得到数据表里没有重复的
    arr.forEach(async item=>{
      let queryBody={
      num:null,
      name:null,
      price:null,
      type:null,
      state:2,
      baseinfo:null,
      image:[],
      income:0,
      time:0,
      repair:{
        expenditure:0,
        reason:null
      }
    }
    await addRoom({...queryBody,...item})
    })
    this.$message.success('导入成功')
    this.$router.push('/roomMng')
    // console.log(arr);
    },
    tranType(data){
    return  Room.type.filter(item=>item.value===data)[0].id
    }
  }
}
</script>

<style>
.upload{
  position: relative;
  z-index: inherit;
  width: 80%;
  margin: 30px auto;
} 
</style>
